Решение уравнений и систем уравнений.

Методы решения нелинейных уравнений делятся на две группы:

  1. точные методы;
  2. итерационные методы.

Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений.

Как известно, многие уравнения и системы уравнений не имеют аналитических решений. В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл. Для их решения используются итерационные методы с заданной степенью точности.

Пусть дано уравнение где:

  1. Функция f(x) непрерывна на отрезке [a, b] вместе со своими производными 1-го и 2-го порядка.
  2. Значения f(x) на концах отрезка имеют разные знаки (f(a)   f(b) < 0).
  3. Первая и вторая производные f' (x) и f'' (x) сохраняют определенный знак на всем отрезке.

Условия 1) и 2) гарантируют, что на интервале [ab] находится хотя бы один корень, а из 3) следует, что f(x) на данном интервале монотонна и поэтому корень будет единственным.

Решить уравнение итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью.

Всякое значение , обращающее функцию f(x) в нуль, т.е. такое, что:

называется корнем уравнения (1) или нулем функции f(x).

Задача нахождения корня уравнения f(x) = 0 итерационным методом состоит из двух этапов:

  1. отделение корней - отыскание приближенного значения корня или содержащего его отрезка;
  2. уточнение приближенных корней - доведение их до заданной степени точности.

Процесс отделения корней начинается с установления знаков функции f(x) в граничных x = a и x = b точках области ее существования.

Пример 1. Отделить корни уравнения:

f(x) º x3 - 6х + 2 = 0.

(1)

Составим приблизительную схему:

х

- ¥

- 3

- 1

0

1

3

+ ¥

f(x)

-

-

+

+

-

+

+

Следовательно, уравнение (1) имеет три действительных корня, лежащих в интервалах [-3, -1], [0, 1] и [1, 3].

Приближенные значения корней (начальные приближения) могут быть также известны из физического смысла задачи, из решения аналогичной задачи при других исходных данных, или могут быть найдены графическим способом.

В инженерной практике распространен графический способ определения приближенных корней.

Принимая во внимание, что действительные корни уравнения - это точки пересечения графика функции f(x) с осью абсцисс, достаточно построить график функции f(x) и отметить точки пересечения f(x) с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение равносильным ему уравнением:

,

(2)

где функции f1(x) и f2(x) - более простые, чем функция f(x). Тогда, построив графики функций у = f1(x) и у = f2(x), искомые корни получим как абсциссы точек пересечения этих графиков.

Рисунок 1.

 

Пример 2. Графически отделить корни уравнения (Рисунок 1):

x lg x = 1.

(3)

Уравнение (3) удобно переписать в виде равенства:

lg x=.

Отсюда ясно, что корни уравнения (3) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = . Построив эти кривые, приближенно найдем единственный корень уравнения (3) или определим его содержащий отрезок [2, 3].

Итерационный процесс состоит в последовательном уточнении начального приближения х0. Каждый такой шаг называется итерацией. В результате итераций находится последовательность приближенных значений корня х1, х2, ..., хn. Если эти значения с увеличением числа итераций n приближаются к истинному значению корня, то говорят, что итерационный процесс сходится.

Пример 3

Ниже приведен текст программы  (Maple) расчета примера с любыми коэффициентами и любой степенью точности методом половинного деления.

 > restart:

Задание коэффициентов

a:=1.1:b:=2.2:c:=-1.5:

Задание степени точности

n:=0.001:

Проверка существования корней

if b^2-4*a*c<0 then print(`Корней нет`);

else

Задание шага

h:=1:

Задание функции

f:=a*x^2+b*x+c;

Нахождение координат вершины параболы

x1:=evalf(-b/(2*a)):xb:=x1;f1:=evalf(a*x1^2+b*x1+c):x:=x1:

Проверка случая одного корня

if f1=0 then print(`Единственный корень х:`,x);fi;

Цикл расчета проверки точности результата

for i from 1 by 1 while(abs(f)>n) do

Условие одинакового знака значений функции в двух соседних точках

if (a*x1^2+b*x1+c)*(a*x^2+b*x+c)>0 then

Переход на следующую позицию

x1:=x:x:=x+h:

else

Уменьшение шага в 2 раза и возврат правой точки на полшага назад

h:=h/2:

x:=x-h:

fi:

Вывод результатов промежуточных расчетов

print(x);

od:

Вывод окончательного результата

x1:=x:

x2:=xb-(x-xb):

fi;

Точное решение

x:='x':

evalf(solve(f,x));

Построение графика

plot(f,x=x2-5..x1+5);

 

Метод половинного деления

 Для нахождения корня уравнения (1), принадлежащего отрезку [ab], делим этот отрезок пополам. Если f = 0 , то x = является корнем уравнения. Если f не равно 0 (что, практически, наиболее вероятно), то выбираем ту из половин или , на концах которой функция f(x) имеет противоположные знаки. Новый суженный отрезок [ а1, b1] снова делим пополам и производим те же самые действия.

Метод половинного деления практически удобно применять для грубого нахождения корня данного уравнения, метод прост и надежен, всегда сходится.

Метод хорд

 В данном методе процесс итераций состоит в том, что в качестве приближений к корню уравнения принимаются значения х1, х2, ..., хn точек пересечения хорды АВ с осью абсцисс (Рисунок 2). Сначала запишем уравнение хорды AB:

.

Для точки пересечения хорды AB с осью абсцисс (х = х1, y = 0) получим уравнение:

Пусть для определенности f'' (x) > 0 при а less.gif (65 bytes)  х less.gif (65 bytes)  b (случай f'' (x) < 0 сводится к нашему, если записать уравнение в виде - f(x) = 0). Тогда кривая у = f(x) будет выпукла вниз и, следовательно, расположена ниже своей хорды АВ. Возможны два случая: 1) f(а) > 0 (Рисунок 2, а) и 2) f(b) < 0 (Рисунок 2, б).

   image002.jpg (4453 bytes)

Рисунок 2, а, б.

 

В первом случае конец а неподвижен и последовательные приближения: x0 = b;

(4)

образуют ограниченную монотонно убывающую последовательность, причем

Во втором случае неподвижен конец b, а последовательные приближения: x0 = а;

(5)

образуют ограниченную монотонно возрастающую последовательность, причем

Обобщая эти результаты, заключаем:

  1. неподвижен тот конец, для которого знак функции f (х) совпадает со знаком ее второй производной f'' (х);
  2. последовательные приближения xn лежат по ту сторону корня x , где функция f (х) имеет знак, противоположный знаку ее второй производной f'' (х).

Итерационный процесс продолжается до тех пор, пока не будет обнаружено, что

| xi - xi - 1|< e ,

где e - заданная предельная абсолютная погрешность.

Метод Ньютона

 

Отличие этого итерационного метода от предыдущего состоит в том, что вместо хорды на каждом шаге проводится касательная к кривой y = f(x) при x = хi и ищется точка пересечения касательной с осью абсцисс (Рисунок 3). При этом не обязательно задавать отрезок [а, b], содержащий корень уравнения, достаточно найти лишь некоторое начальное приближение корня x = х0.

Применяя метод Ньютона, следует руководствоваться следующим правилом: в качестве исходной точки х0 выбирается тот конец интервала [а, b], которому отвечает ордината того же знака, что и знак f'' (х).

Рисунок 3.

 

Уравнение касательной, проведенной к кривой y = f(x) через точку В0 с координатами х0 и f(х0), имеет вид:

Отсюда найдем следующее приближение корня х1 как абсциссу точки пересечения касательной с осью Ох (y = 0):

 

Аналогично могут быть найдены и следующие приближения как точки пресечения с осью абсцисс касательных, проведенных в точках В1, В2 и так далее. Формула для i +1 приближения имеет вид:

(6)

Для окончания итерационного процесса может быть использовано или условие | f(xi)| < e , или условие близости 2х последовательных приближений | xi - xi - 1 | < e .

Итерационный процесс сходится если

f(х0) * f'' (х0) > 0.

 

Метод простой итерации

 

Для использования метода итерации исходное нелинейное уравнение f(х) = 0 заменяется равносильным уравнением

x = j(x).

(7)

Пусть известно начальное приближение корня х = х0. Подставляя это значение в правую часть уравнения (7), получим новое приближение:

х1 = j(х0).

 

Далее, подставляя каждый раз новое значение корня в (7), получаем последовательность значений:

(8)

Геометрически метод итерации может быть пояснен следующим образом. Построим на плоскости хОу графики функций у = х и у = j (х). Каждый действительный корень уравнения (7) является абсциссой точки пересечения М кривой у = j (х) с прямой у = х (Рисунок 5, а).

 Рисунок 5.

 

Отправляясь от некоторой точки А0 [x0, j (x0)], строим ломаную А0В1А1В2А2... (“лестница”), звенья которой попеременно параллельны оси Ох и оси Оу, вершины А0, А1, А2...лежат на кривой у=j (х), а вершины В1, В2, В3, …, - на прямой у = х. Общие абсциссы точек А1 и В1, А2 и В2, ..., очевидно, представляют собой соответственно последовательные приближения х1, х2, ... корня .

Возможен также другой вид ломаной А0В1А1В2А2 ... - “спираль” (Рисунок 5, б). Решение в виде “лестницы” получается, если производная j' (х) положительна, а решение в виде “спирали”, если j' (х) отрицательна.

На Рисунке 5, а, б кривая у = j (х) в окрестности корня - пологая, то есть <1, и процесс итерации сходится. Однако, если рассмотреть случай, где >1, то процесс итерации может быть расходящимся (Рисунок 6).

 Рисунок 6.

 

Метод итерации

Пусть дана линейная система                 (9)

Введя в рассмотрение матрицы , систему (9) коротко можно записать в виде матричного уравнения Ах = b. Предполагая, что диагональные коэффициенты aij   не равны 0 (i = 1, 2, …, n), разрешим первое уравнение системы (9) относительно х1, второе - относительно х2 и т. д. Тогда получим эквивалентную систему

 

(14)

где

при i не равно j

и a ij = 0 при i = j (i, j = 1, 2, …, n).

Введя матрицы

и ,

систему (14) можно записать в матричной форме

x = b  + a x,

а любое (k + 1) приближение вычисляется по формуле

x (k+1)b  + a x (k).

(15)

Напишем формулы приближений в развернутом виде:

 

(16 )

Приведем достаточное условие сходимости метода итераций.

Теорема: Процесс итерации для приведенной линейной системы (18) сходится к единственному ее решению, если какая-нибудь каноническая норма матрицы a меньше единицы, т.е. для итерационного процесса (19) достаточное условие есть

(17)

 

Метод Зейделя

 Метод Зейделя представляет собой некоторую модификацию метода итераций. Основная его идея заключается в том, что при вычислении (k + 1)-го приближения неизвестной xi учитываются уже вычисленные ранее (k + 1)-е приближения неизвестных x1, x2, …, xi - 1.

Пусть получена эквивалентная система (18). Выберем произвольно начальные приближения корней . Далее, предполагая, что k-ые приближения корней известны, согласно Зейделю будем строить (k + 1)-е приближения корней по формулам:

 

(18)

Заметим, что указанные выше условия сходимости для простой итерации остается верной для итерации по методу Зейделя. Обычно метод Зейделя дает лучшую сходимость, чем метод простой итерации, но приводит к более громоздким вычислениям.

В отличие от систем линейных уравнений для систем нелинейных уравнений не известны прямые методы решения. Лишь в отдельных случаях систему можно решить непосредственно. Например, для системы из двух уравнений иногда удается выразить одно неизвестное через другое и таким образом свести задачу к решению одного нелинейного уравнения относительно одного неизвестного. Поэтому итерационные методы для нелинейных систем приобретают особую актуальность.

 Метод Ньютона.

 Рассмотрим нелинейную систему уравнений

 

(19)

или в векторной форме

f (x) = 0,

(20)

где

f x

Для решения системы будем пользоваться методом последовательных приближений.

Предположим, известно k-е приближение

x(k) =

одного из изолированных корней x = векторного уравнения (20). Тогда точный корень уравнения (20) можно представить в виде

х = x(k) + D x(k),

(21)

где D x(k) = - поправка (погрешность корня).

Подставляя выражение (21) в (20), будем иметь

f (x(k) + D x(k)) = 0.

(22)

Предполагая, что функция f (x) непрерывно дифференцируема в некоторой выпуклой области, содержащей x и x(k), разложим левую часть уравнения (22) по степеням малого вектора D x(k) , ограничиваясь линейными членами,

f (x(k) + D x(k)) = f (x(k)) + f (x(k)) D x(k) = 0

(23)

или, в развернутом виде,

 

 

 

(24)

Из формул (23) и (24) вытекает, что под производной f '(x) следует понимать матрицу Якоби системы функций f1, f2, ..., fn относительно переменных x1, x2, ..., xn, т. е.

f ' (x) = W(x) =,

или в краткой записи

f ' (x) = W(x) = (i, j = 1, 2, …, n).

Поэтому формула (24) может быть записана в следующем виде:

f (x(k) ) + W (x(k) ) D x(k) = 0

Если det W ( х ) =, то D x(k) = - W -1(x(k)) f (x(k)).

Отсюда видно, что метод Ньютона решения системы (19) состоит в построении итерационной последовательности:

x(k + 1) = x(k) - W -1(x(k)) f (x(k)) (k = 0, 1, 2, …).

(25)

Если все поправки становятся достаточно малыми, счет прекращается. Иначе новые значения xi используются как приближенные значения корней, и процесс повторяется до тех пор, пока не будет найдено решение или не станет ясно, что получить его не удастся.

 

Задания:

 

1. Найти методом половинного деления отличный от нуля корень трансцендентного уравнения

1.    x2 - 5 sin х = 0;

2.    sin х - 1/x = 0;

3.    lg x - cos x = 0

с четырьмя знаками после запятой. Корни отделить графически.

2. Найти, используя метод хорд, действительный корень x уравнения

1.    x3 - 2 x2 + х - 3 = 0;

2.    x3 - 2 x2 + 3 х - 5 = 0;

3.    x4 - 5x3 + 2 x2 - 10 х + 1 = 0

с точностью e = 10-4. Корни отделить аналитически.

3. Найти, используя метод Ньютона, действительный корень x уравнения

1.    x3 - 2 x2 + х - 3 = 0;

2.    x3 - 2 x2 + 3 х - 5 = 0;

3.    x4 - 5x3 + 2 x2 - 10 х + 1 = 0

с точностью e = 10-4. Корни отделить аналитически.

4. Найти наибольший положительный корень x уравнения

1.    x3 + х = 1000;

2.    4 x - 5 ln x = 5;

3.    ex - 10 x = 0

с точностью e = 10-4, используя метод итераций. Корни отделить графически.

5. Систему

привести к виду, годному для применения метода итерации.

6. Решить систему

1.   

2.   

методом итерации.

7. Методом Зейделя решить систему уравнений

8. Приближенно найти положительные решения системы нелинейных уравнений методом Ньютона